import QtQuick 1.0
import "../WebAccess/HttpAccess.js" as WebAccess
import "../WebAccess/TwitterAPI.js" as TwitterAPI
import "../Util/IncSearch.js" as IncSearch
import "../Util/Util.js" as Util

ListModel {
    id: _root

    property bool accessReady: true     //上位で読込みに関するReady状態を指定する
    property bool isReady: /*ready ||*/ accessReady    //状態の合成（最終的にこれを見る）

    property string queryString: ""
    property string prevQueryString: ""

    ListElement {
        id_str: ""
        created_at: ""
        text: ""
        from_user: ""
        profile_image_url: ""
        entities: ""
        source: ""
    }

    //最新を取得する
    function getRecent(){
        if(queryString.length === 0){
        }else{

            if(prevQueryString === queryString){
            }else{
                // 前回と違ったら消す
                clear();
            }

            var url = TwitterAPI.getSearchURL(queryString, 1);
            // "http://search.twitter.com/search.json?q=" + encodeURIComponent(queryString);

            Util.outputDebugString("search start:" + queryString + ", " + url);

            accessReady = false;
            var obj = new WebAccess.requestHttp("", "GET"
                                                , url
                                                , true, responseHttp);

            // 前回保存
            prevQueryString = queryString;
        }
    }


    //次のページを取得する
    function getMore(){
    }


    // httpリクエストの応答
    function responseHttp(obj){
        var data = eval("(" + obj.responseText + ")");

        var insert_index = 0;
        var exist = false;
        for(var i=0; i<data.results.length; i++){
            // 重複確認
            exist = false;
            for(var j=0; j<_root.count; j++){
                var item = _root.get(j);
                if(item.id_str === data.results[i].id_str){
                    // 同じ
                    exist = true;
                    break;
                }
            }
            if(!exist){
                // 重複しなかったので登録
                insert(insert_index++, data.results[i]);

                // インクリメンタルサーチ用の登録
                IncSearch.add(IncSearch.SEARCH_KIND_SCREEN_NAME, data.results[i].from_user);
                if(data.results[i].entities === undefined){
                }else if(data.results[i].entities.hashtags === undefined){
                }else{
                    var tags = data.results[i].entities.hashtags;
                    for(var tag_i=0; tag_i<tags.length; tag_i++){
                        IncSearch.add(IncSearch.SEARCH_KIND_HASH_TAG, tags[tag_i].text);
                    }
                }
            }
        }

        accessReady = true;
    }


}
